home *** CD-ROM | disk | FTP | other *** search
- * fade.s
- * フェードイン/アウト(コントラスト操作) / 最高速 = 3
- * by Mitsuky
-
- .include IOCSCALL.MAC
-
- SPEED_MAX equ 3
-
- .offset 8 * 引き数
- _source_ptr: .ds.l 1
- _dest_ptr: .ds.l 1
- _speed: .ds.l 1
- _vdisp: .ds.l 1
-
-
- WAIT equ 180 * ファードアウト後待つ時間(単位 1/60 秒)
-
- CONTRAST equ $ed_0028
-
-
-
- .text
- .even
-
- .dc.b 'WL10',$0d,$0a
- .dc.b 'フェードイン/アウト(コントラスト操作) / 最高速 = 3',$0d,$0a
- .dc.b ' by Mitsuky',$0d,$0a
- .dc.b $1a
- .even
- fade:
- link a6,#0
- movem.l d1-d7/a0-a5,-(sp)
-
- move.l _speed(a6),d0
- bmi main_ask_speed
- cmpi.l #SPEED_MAX,d0
- bhi main_err
-
- tst.l _vdisp(a6)
- bmi main_ask_vdisp
-
-
- moveq.l #SPEED_MAX,d7
- sub.l d0,d7
- lsl.l #2,d7 * d7.l = ループ回数-1
-
-
- moveq.l #-1,d1 * 現在のコントラスト問い合わせ
- IOCS _CONTRAST
- move.b d0,d1
- subq.b #1,d1 * d1.b = 設定するコントラスト
-
- main_out_loop:
- IOCS _CONTRAST
- move.w d7,d0
- @@: bsr vdisp
- dbra d0,@b
- subq.b #1,d1
- bne main_out_loop
-
- IOCS _CONTRAST
-
- move.w #WAIT-1,d0
- @@: bsr vdisp * 完全にコントラストが安定するまで待つ
- dbra d0,@b
-
-
- movea.l _source_ptr(a6),a0 * a0.l = 転送元アドレス
- movea.l _dest_ptr(a6),a1 * a1.l = 転送先アドレス
-
- move.w #512-1,d0
- @@: .rept 512/2
- move.l (a0)+,(a1)+ * 1ライン転送(手抜き)
- .endm
- dbra d0,@b
-
-
- move.b CONTRAST,d2 * システムのコントラスト値
- moveq.l #1,d1
- main_in:
- IOCS _CONTRAST
- move.w d7,d0
- @@: bsr vdisp
- dbra d0,@b
- addq.b #1,d1
- cmp.b d1,d2
- bcc main_in
-
-
- moveq.l #0,d0
- main_rts:
- movem.l (sp)+,d1-d7/a0-a5
- unlk a6
- rts
-
-
- **** ****
- main_err:
- moveq.l #-1,d0
- bra main_rts
-
-
- **** ****
- main_ask_speed:
- moveq.l #SPEED_MAX,d0
- bra main_rts
-
-
- **** ****
- main_ask_vdisp:
- move.l _speed(a6),d0
- lea.l ask_vdisp_table(pc),a0
- add.w d0,d0
- move.w (a0,d0.w),d0
- bra main_rts
-
- ask_vdisp_table:
- .dc.w 557,441,325,209
-
-
- *********************************************************
- vdisp:
- movem.l a0,-(sp)
- move.l _vdisp(a6),a0
- jsr (a0)
- movem.l (sp)+,a0
- rts